package com.itzjc.service;

import com.itzjc.domain.entity.*;
import com.itzjc.domain.pojo.CurrentProjectInfo;
import com.itzjc.domain.pojo.FileFromCenter;
import com.itzjc.domain.pojo.ProjectInfo;
import com.itzjc.domain.pojo.User;

import java.math.BigInteger;
import java.util.List;

/**
 * TODO
 *
 * @className: ProjectService
 * @date: 2021-06-10 21:55
 **/
public interface ProjectService {
    List<ProjectInfo> getProjectByToken(Integer userId);

    String createProjectById(RequestProject requestProject);

    void deleteProjectByToken(Integer userId, Integer projectId);

    List<ProjectInfo> getAuditProjectByToken(Integer userId);

    List<ProjectInfo> getAuditedProjectByToken(Integer userId);

    List<ProjectInfo> getAuthorizingProjectByToken(Integer userId);

    List<ProjectInfo> getAuthorizedProjectByToken(Integer userId);

    CurrentProjectInfo getProjectInfoByTokenAndId(Integer userId, Integer projectId);

    String updateProjectImg(RequestImage requestImage);

    void updateWholeProject(RequestUpdateAllProject requestUpdateAllProject);

    String updateProjectModule(RequestModule requestModule);

    List<BigInteger> findByIdForSecondSource(int id);

    void okForThisProject(Integer projectId);

    String rejectCurrentProject(RequestRejectCurrentProject requestRejectCurrentProject);

    String sureCurrentProjectStage(RequestSureCurrentProjectStage requestSureCurrentProjectStage);

    List<User> getBlockedUsers(Integer userId);

    List<User> getUnBlockedUsers(Integer userId);

    void recoverUser(Integer userId, Integer uIdForUser);

    void moveOutUser(Integer userId, Integer uIdForUser);

    List<ProjectInfo> searchProjectInfoByTokenAndString(Integer userId, String word);

    List<User> searchUsersByTokenAndString(Integer userId, String word);

    List<FileFromCenter> getFilesFromCenter(Integer userId);

    String uploadFileToCenter(RequestFileCenterCreator requestFileCenterCreator);

    void deleteFileFromCenterByToken(Integer userId, Integer fileId);

    void generateForgetCode(Integer userId, String info);

    void deleteUser(Integer userId, Integer uIdForUser);
}
